﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Apa.Control;
using Apa.Data;

namespace Apa.Forms
{
    public partial class frmCrearPrograma : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Controladora control = new Controladora();
                ddlIes.DataSource = control.ies();
                ddlIes.DataTextField = "nombre";
                ddlIes.DataValueField = "id";
                ddlIes.DataBind();

                ListItem items = new ListItem("[Seleccionar]", "");
                ddlIes.Items.Insert(0, items);
                ddlIes.SelectedIndex = 0;

                ddlNivelAcademico.DataSource = control.nivelAcademico();
                ddlNivelAcademico.DataTextField = "nombre";
                ddlNivelAcademico.DataValueField = "id";
                ddlNivelAcademico.DataBind();

                ddlNivelAcademico.Items.Insert(0, items);
                ddlNivelAcademico.SelectedIndex = 0;


                ddlNivelFormacion.DataSource = control.nivelFormacion();
                ddlNivelFormacion.DataTextField = "nombre";
                ddlNivelFormacion.DataValueField = "id";
                ddlNivelFormacion.DataBind();

                ddlNivelFormacion.Items.Insert(0, items);
                ddlNivelFormacion.SelectedIndex = 0;

            }
        }

        protected void btGuardar_Click(object sender, EventArgs e)
        {
            Controladora control = new Controladora();
            tblUsuario userActual = Session["Usuario"] as tblUsuario;


            //tblPrograma programa = new tblPrograma();

            //DateTime date=DateTime.Now;
            
            //programa.idIES = int.Parse(ddlIes.SelectedItem.Value);
            //programa.nombre = tbPrograma.Text;
            //programa.contacto = tbContacto.Text;
            //programa.usuario = userActual.nombre;
            //programa.fecha = date;


            //tblUsuario usuario = new tblUsuario();
            //usuario.nombre = tbNombreUsuario.Text; 
            //usuario.clave = tbContrasena.Text;
            //usuario.tipo = "AdminPrograma";
            //usuario.activo = 1;
            //usuario.usuario = userActual.nombre;
            //usuario.fecha = date;

            lbInforme.Text = "";
            bool validar = true;

            if ((tbFechaIni1.Text.Trim() == "" && tbFechaFin1.Text.Trim() == "") && (tbFechaIni2.Text.Trim() == "" && tbFechaFin2.Text.Trim() == ""))
            {
                lbInforme.Text += ("Debe seleccionar al menos la fecha de inicio y fin de un módulo  <br/>");
                Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "myFunction('tbContrasena','" + tbContrasena.Text + "');", true);
                Page.ClientScript.RegisterStartupScript(this.GetType(), "script2", "myFunction('tbConfirmarContraseña','" + tbConfirmarContraseña.Text + "');", true);
                
                return;

            }

            //if ((tbFechaIni1.Text.Trim() != ""))
            //{

            //    try
            //    {
            //        if ( DateTime.Parse(DateTime.Parse(tbFechaIni1.Text.Trim()).ToString("yyyy-MM-dd") )< DateTime.Parse( DateTime.Now.ToString("yyyy-MM-dd")))
            //        {
            //        lbInforme.Text += ("La fecha inicial del módulo registro calificado debe ser mayor o igual al dia actual <br/>");
            //        Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "myFunction('tbContrasena','" + tbContrasena.Text + "');", true);
            //        Page.ClientScript.RegisterStartupScript(this.GetType(), "script2", "myFunction('tbConfirmarContraseña','" + tbConfirmarContraseña.Text + "');", true);

            //        return;
            //        }
            //    }
            //    catch (Exception)
            //    {
            //    }

            //}

            //if ((tbFechaIni2.Text.Trim() != "" ))
            //{

            //    try
            //    {
            //        if (DateTime.Parse(DateTime.Parse(tbFechaIni2.Text.Trim()).ToString("yyyy-MM-dd")) < DateTime.Parse( DateTime.Now.ToString("yyyy-MM-dd")))
            //        {
            //            lbInforme.Text += ("La fecha inicial del módulo Alta Calidad debe ser mayor o igual al dia actual <br/>");
            //            Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "myFunction('tbContrasena','" + tbContrasena.Text + "');", true);
            //            Page.ClientScript.RegisterStartupScript(this.GetType(), "script2", "myFunction('tbConfirmarContraseña','" + tbConfirmarContraseña.Text + "');", true);

            //            return;
            //        }
            //    }
            //    catch (Exception)
            //    {

            //    }
            //}





            if (tbFechaIni1.Text.Trim().Length > 0 && tbFechaFin1.Text.Trim().Length == 0)
            {
                lbInforme.Text += ("Las fechas del módulo registro Calificado no se han seleccionado correctamente  <br/>");
                validar=false;

            }
            else
            {

                try
                {
                    if (DateTime.Parse(tbFechaIni1.Text.Trim()) > DateTime.Parse(tbFechaFin1.Text.Trim()))
                    {
                        lbInforme.Text += ("La fecha Inicial del módulo registro Calificado no puede ser mayor a la fecha final  <br/>");
                        validar = false;
                    }
                }
                catch (Exception)
                {

                }

            }

            if (tbFechaIni2.Text.Trim().Length > 0 && tbFechaFin2.Text.Trim().Length == 0)
            {
                lbInforme.Text += ("Las fechas del módulo Alta Calidad no se han seleccionado correctamente  <br/>");
                validar = false;
            }
            else
            {
                try
                {
                    if (DateTime.Parse(tbFechaIni2.Text.Trim()) > DateTime.Parse(tbFechaFin2.Text.Trim()))
                    {
                        lbInforme.Text += ("La fecha Inicial del módulo Alta Calidad no puede ser mayor a la fecha final  <br/>");
                        validar = false;
                    }
                }
                catch (Exception)
                {

                }

            }

            //Valida si las fechas de los módulos son correctas.
            if (validar)
            {


                if (tbContrasena.Text == tbConfirmarContraseña.Text)
                {


                    tblUsuario user = control.consultarUsuario(tbNombreUsuario.Text);

                    tblPrograma programa = control.consultarProgramaXCodigo(int.Parse(ddlIes.SelectedItem.Value), tbCodigo.Text);

                    if (programa == null)
                    {

                        if ((control.consultarProgramaXNombre(int.Parse(ddlIes.SelectedItem.Value), tbPrograma.Text) == null))
                        {

                            if (user == null)
                            {
                                bool inserta = false;

                                inserta = control.insertarUsuario(tbNombreUsuario.Text, userActual.nombre, tbContrasena.Text, "AdminPrograma");

                                if (inserta)
                                {

                                    programa = control.insertarPrograma(int.Parse(ddlIes.SelectedItem.Value), tbCodigo.Text, tbPrograma.Text, int.Parse(ddlNivelAcademico.SelectedItem.Value), int.Parse(ddlNivelFormacion.SelectedItem.Value), tbContacto.Text, tbTelefono.Text, tbDireccion.Text, tbCorreo.Text, int.Parse(tbCantidad.Text), userActual.nombre);

                                    if (tbFechaIni1.Text != "" && tbFechaFin1.Text != "")
                                    {

                                        tblModulo Modulo = control.consultarModulo("REGISTRO CALIFICADO");


                                        tblUsuario usuarioInsert = control.consultarUsuario(tbNombreUsuario.Text);

                                        inserta = control.insertarLicencia(programa.id, Modulo.id, usuarioInsert.id, DateTime.Parse(tbFechaIni1.Text), DateTime.Parse(tbFechaFin1.Text), userActual.nombre);

                                        if (inserta)
                                        {
                                            lbInforme.Text += " Se ha guardado correctamente los datos para el Modúlo 'Registro Calificado' <br/>";

                                        }
                                        else
                                        {

                                            lbInforme.Text += (" Error al registrar el usuario en el Modúlo 'Registro Calificado' <br/>");
                                        }

                                    }

                                    if (tbFechaIni2.Text != "" && tbFechaFin2.Text != "")
                                    {
                                        tblModulo Modulo = control.consultarModulo("ALTA CALIDAD");
                                        tblUsuario usuarioInsert = control.consultarUsuario(tbNombreUsuario.Text);

                                        inserta = control.insertarLicencia(programa.id, Modulo.id, usuarioInsert.id, DateTime.Parse(tbFechaIni2.Text), DateTime.Parse(tbFechaFin2.Text), userActual.nombre);

                                        if (inserta)
                                        {
                                            lbInforme.Text += " Se ha guardado correctamente los datos para el Modúlo 'Alta Calidad' <br/>";

                                        }
                                        else
                                        {

                                            lbInforme.Text += (" Error al registrar el usuario en el Modúlo 'Alta Calidad' <br/>");
                                        }

                                    }
                                }


                                tbNombreUsuario.Text = "";
                                tbPrograma.Text = "";
                                tbCantidad.Text = "";
                                tbContrasena.Text = "";
                                tbConfirmarContraseña.Text = "";
                                tbFechaIni1.Text = "";
                                tbFechaFin1.Text = "";
                                tbFechaIni2.Text = "";
                                tbFechaFin2.Text = "";
                                tbCodigo.Text = "";
                                tbContacto.Text = "";
                                tbTelefono.Text = "";
                                tbDireccion.Text = "";
                                tbCorreo.Text = "";
                                int i = 0;
                                foreach (ListItem item in ddlIes.Items)
                                {
                                    if (i == 0)
                                    {
                                        item.Selected = true;
                                        i++;

                                    }
                                    else
                                    {
                                        item.Selected = false;


                                    }
                                }

                                

                            }
                            else
                            {

                                lbInforme.Text = ("El usuario ya existe");
                            }
                        }
                        else
                        {

                            lbInforme.Text = ("Este nombre de programa ya tiene una licencia asignada");
                        }
                    }
                    else
                    {
                        bool actualizar = control.actualizarPrograma(programa.id, tbCodigo.Text, tbPrograma.Text, int.Parse(ddlNivelFormacion.SelectedItem.Value), int.Parse(ddlNivelAcademico.SelectedItem.Value), tbContacto.Text, tbTelefono.Text, tbDireccion.Text, tbCorreo.Text, int.Parse(tbCantidad.Text), userActual.nombre);
                        tblUsuario usuarioInsert = control.consultarUsuario(tbNombreUsuario.Text);
                        try
                        {
                            tblModulo Modulo = control.consultarModulo("REGISTRO CALIFICADO");
                            actualizar = control.actualizarLicencia(programa.id, Modulo.id, DateTime.Parse(tbFechaIni1.Text), DateTime.Parse(tbFechaFin1.Text), userActual.nombre);
                            if (!actualizar)
                            {
                                actualizar = control.insertarLicencia(programa.id, Modulo.id, usuarioInsert.id, DateTime.Parse(tbFechaIni2.Text), DateTime.Parse(tbFechaFin2.Text), userActual.nombre);
                                if (actualizar)
                                {
                                    lbInforme.Text += " Se ha guardado correctamente los datos para el Modúlo 'Registro Calificado' <br/>";
                                }
                                else
                                {
                                    lbInforme.Text += " Error al guardar los datos para el Modúlo 'Registro Calificado' <br/>";

                                }
                              }
                            else
                            {
                                lbInforme.Text += " Se ha guardado correctamente los datos para el Modúlo 'Registro Calificado' <br/>";
                            }
                        }
                        catch (Exception)
                        {

                        }

                        try
                        {
                            tblModulo Modulo = control.consultarModulo("ALTA CALIDAD");
                            actualizar = control.actualizarLicencia(programa.id, Modulo.id, DateTime.Parse(tbFechaIni2.Text), DateTime.Parse(tbFechaFin2.Text), userActual.nombre);
                            if (!actualizar)
                            {
                                actualizar = control.insertarLicencia(programa.id, Modulo.id, usuarioInsert.id, DateTime.Parse(tbFechaIni2.Text), DateTime.Parse(tbFechaFin2.Text), userActual.nombre);
                                if (actualizar)
                                {
                                    lbInforme.Text += " Se ha guardado correctamente los datos para el Modúlo 'Alta Calidad' <br/>";
                    

                                 }else{
                               
                                    
                                    lbInforme.Text += " Error al guardar los datos para el Modúlo 'Alta Calidad' <br/>";
                    
                                 }
                            
                            }
                            else
                            {

                                lbInforme.Text += " Se ha guardado correctamente los datos para el Modúlo 'Alta Calidad' <br/>";
                            }
                        }
                        catch (Exception)
                        {

                        }
                        actualizar = control.actualizarUsuario(user.id, tbPrograma.Text);

                        tbNombreUsuario.Text = "";
                        tbPrograma.Text = "";
                        tbCantidad.Text = "";
                        tbContrasena.Text = "";
                        tbConfirmarContraseña.Text = "";
                        tbFechaIni1.Text = "";
                        tbFechaFin1.Text = "";
                        tbFechaIni2.Text = "";
                        tbFechaFin2.Text = "";
                        tbCodigo.Text = "";
                        tbContacto.Text = "";
                        tbDireccion.Text = "";
                        tbTelefono.Text = "";
                        tbCorreo.Text = "";
                        int i = 0;
                        foreach (ListItem item in ddlIes.Items)
                        {
                            if (i == 0)
                            {
                                item.Selected = true;
                                i++;

                            }
                            else
                            {
                                item.Selected = false;


                            }
                        }


                        foreach (ListItem item in ddlNivelAcademico.Items)
                        {
                            if (i == 0)
                            {
                                item.Selected = true;
                                i++;

                            }
                            else
                            {
                                item.Selected = false;


                            }
                        }
                    }

                }
                else
                {

                    lbInforme.Text = ("Confirmar contraseña no coincide con la contraseña digitada");
                }



            }

            Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "myFunction('tbContrasena','" + tbContrasena.Text + "');", true);
            Page.ClientScript.RegisterStartupScript(this.GetType(), "script2", "myFunction('tbConfirmarContraseña','" + tbConfirmarContraseña.Text + "');", true);
            

            
        }

        protected void tbCodigo_TextChanged(object sender, EventArgs e)
        {
            try{
           Controladora control = new Controladora();
           tblPrograma programa= control.consultarProgramaXCodigo(int.Parse(ddlIes.SelectedItem.Value), tbCodigo.Text);
           if(programa!=null){
           tbPrograma.Text = programa.nombre;
           tbCantidad.Text = programa.cantidadUsuarios + "";
           List<tblLicencia> licencia = control.consultarLicenciaXPrograma(programa.id).OrderBy(x=> x.id).ToList();
           tblUsuario usuario = control.consultarUsuario(licencia.First().idUsuario);

           tbNombreUsuario.Text = usuario.nombre;
           tbContacto.Text = programa.contacto;
           tbContrasena.Text = usuario.clave;
           tbConfirmarContraseña.Text = usuario.clave;

           tbTelefono.Text = programa.telefono;
           tbDireccion.Text = programa.direccion;
           tbCorreo.Text = programa.correo;

           tblNivelAcademico tp = control.nivelAcademico(programa.idNivelAcademico);

           if (tp != null)
           foreach (ListItem item in ddlNivelAcademico.Items)
           {
               if (item.Value == tp.id.ToString())
               {
                   item.Selected = true;

               }
               else
               {
                   item.Selected = false;


               }
           }


           tblNivelFormacion tf = control.nivelFormacion(programa.idNivelFormacion);

           if (tf != null)
           foreach (ListItem item in ddlNivelFormacion.Items)
           {
               if (item.Value == tf.id.ToString())
               {
                   item.Selected = true;

               }
               else
               {
                   item.Selected = false;


               }
           }

           Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "myFunction('tbContrasena','" + tbContrasena.Text + "');", true);
           Page.ClientScript.RegisterStartupScript(this.GetType(), "script2", "myFunction('tbConfirmarContraseña','" + tbConfirmarContraseña.Text + "');", true);


           tbFechaIni1.Text = "";
           tbFechaFin1.Text = "";

           tbFechaIni2.Text = "";
           tbFechaFin2.Text = "";

           tbCodigo.Text = programa.codigo;
           tbPrograma.Text = programa.nombre;

            int i=0;
            foreach(tblLicencia lic in licencia){
                
                i++;
                if(lic.idModulo==4){

           tbFechaIni1.Text=lic.fechaVigIni.ToString("yyyy-MM-dd");
           tbFechaFin1.Text=lic.fechaVigFin.ToString("yyyy-MM-dd");
    
                }

                if(lic.idModulo==4){

                    tbFechaIni2.Text = lic.fechaVigIni.ToString("yyyy-MM-dd");
                    tbFechaFin2.Text = lic.fechaVigFin.ToString("yyyy-MM-dd");
                }
            }
          
            }
            }
            catch (Exception)
            {

            }
        }

        protected void btLimpiar_Click(object sender, EventArgs e)
        {
            tbNombreUsuario.Text = "";
            tbPrograma.Text = "";
            tbCantidad.Text = "";
            tbContrasena.Text = "";
            tbConfirmarContraseña.Text = "";
            tbFechaIni1.Text = "";
            tbFechaFin1.Text = "";
            tbFechaIni2.Text = "";
            tbFechaFin2.Text = "";
            tbCodigo.Text = "";
            tbContacto.Text = "";
            lbInforme.Text = "";
            tbTelefono.Text = "";
            tbDireccion.Text = "";
            tbCorreo.Text = "";
            int i = 0;
            foreach (ListItem item in ddlIes.Items)
            {
                if (i == 0)
                {
                    item.Selected = true;
                    i++;

                }
                else
                {
                    item.Selected = false;


                }
            }


            foreach (ListItem item in ddlNivelAcademico.Items)
            {
                if (i == 0)
                {
                    item.Selected = true;
                    i++;

                }
                else
                {
                    item.Selected = false;


                }
            }
        }

        protected void tbPrograma_TextChanged(object sender, EventArgs e)
        {
            try{
            Controladora control = new Controladora();
            tblPrograma programa = control.consultarProgramaXNombre(int.Parse(ddlIes.SelectedItem.Value), tbPrograma.Text);
            if (programa != null)
            {
                tbPrograma.Text = programa.nombre;
                tbCantidad.Text = programa.cantidadUsuarios + "";
                List<tblLicencia> licencia = control.consultarLicenciaXPrograma(programa.id).OrderBy(x => x.id).ToList();
                tblUsuario usuario = control.consultarUsuario(licencia.First().idUsuario);

                tbNombreUsuario.Text = usuario.nombre;
                tbContacto.Text = programa.contacto;
                tbContrasena.Text = usuario.clave;
                tbConfirmarContraseña.Text = usuario.clave;
                tbCodigo.Text = programa.codigo;
                tbPrograma.Text = programa.nombre;
                tbTelefono.Text = programa.telefono;
                tbDireccion.Text = programa.direccion;
                tbCorreo.Text = programa.correo;
                tblNivelAcademico tp = control.nivelAcademico(programa.idNivelAcademico);

                if(tp!=null)
                foreach (ListItem item in ddlNivelAcademico.Items)
                {
                    if (item.Value == tp.id.ToString())
                    {
                        item.Selected = true;

                    }
                    else
                    {
                        item.Selected = false;


                    }
                }



                tblNivelFormacion tf = control.nivelFormacion(programa.idNivelFormacion);

                if (tf != null)
                foreach (ListItem item in ddlNivelFormacion.Items)
                {
                    if (item.Value == tf.id.ToString())
                    {
                        item.Selected = true;

                    }
                    else
                    {
                        item.Selected = false;


                    }
                }


                Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "myFunction('tbContrasena','" + tbContrasena.Text + "');", true);
                Page.ClientScript.RegisterStartupScript(this.GetType(), "script2", "myFunction('tbConfirmarContraseña','" + tbConfirmarContraseña.Text + "');", true);

                tbFechaIni1.Text = "";
                tbFechaFin1.Text ="";

                tbFechaIni2.Text = "";
                tbFechaFin2.Text = "";

                int i = 0;
                foreach (tblLicencia lic in licencia)
                {

                    i++;
                    if (lic.idModulo == 3)
                    {

                        tbFechaIni1.Text = lic.fechaVigIni.ToString("yyyy-MM-dd");
                        tbFechaFin1.Text = lic.fechaVigFin.ToString("yyyy-MM-dd");

                    }

                    if (lic.idModulo == 4)
                    {

                        tbFechaIni2.Text = lic.fechaVigIni.ToString("yyyy-MM-dd");
                        tbFechaFin2.Text = lic.fechaVigFin.ToString("yyyy-MM-dd");
                    }
                }
          

            }
            }
            catch (Exception)
            {

            }
        }

        protected void ddlIes_SelectedIndexChanged(object sender, EventArgs e)
        {
            tbNombreUsuario.Text = "";
            tbPrograma.Text = "";
            tbCantidad.Text = "";
            tbContrasena.Text = "";
            tbConfirmarContraseña.Text = "";
            tbFechaIni1.Text = "";
            tbFechaFin1.Text = "";
            tbFechaIni2.Text = "";
            tbFechaFin2.Text = "";
            tbCodigo.Text = "";
            tbContacto.Text = "";
            lbInforme.Text = "";
            tbTelefono.Text = "";
            tbDireccion.Text = "";
            tbCorreo.Text = "";
           
        }

        
    }
}